package cn.huiyunche.base.service.interfaces;

import cn.huiyunche.base.service.form.ScPriceconfOcForm;
import cn.huiyunche.base.service.model.ScPriceconfOc;
import cn.huiyunche.base.service.query.ScPriceconfOcQueryConditions;
import cn.huiyunche.base.service.vo.PageVo;
import org.springframework.validation.BindingResult;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * The interface Sc priceconf oc service.
 *
 * @FileName: cn.huiyunche.base.service.interfaces
 * @Description: 线路里程变更
 * @author: Aaron
 * @date: 2017 /3/13 下午4:28
 */
public interface ScPriceconfOcService {

    /**
     * Add integer.
     *
     * @param form the form
     * @param br   the br
     * @return the integer
     * @throws Exception the exception
     */
    Integer add(ScPriceconfOcForm form, BindingResult br) throws Exception;

    /**
     * Update.
     *
     * @param form the form
     * @param br   the br
     * @throws Exception the exception
     */
    void update(ScPriceconfOcForm form, BindingResult br) throws Exception;

    /**
     * Update selective.
     *
     * @param oc the oc
     * @throws Exception the exception
     */
    void updateSelective(ScPriceconfOc oc) throws Exception;

    /**
     * Del.
     *
     * @param id the id
     * @throws Exception the exception
     */
    void del(Integer id) throws Exception;

    /**
     * Select by effective date and route id sc priceconf oc.
     *
     * @param vehicleTypeId the route id
     * @param effectiveDate the effective date
     * @return the sc priceconf oc
     * @throws Exception the exception
     */
    ScPriceconfOc selectByEffectiveDateAndVehicleTypeId(Integer vehicleTypeId, Date effectiveDate) throws Exception;

    /**
     * Select by route id list.
     *
     * @param vehicleTypeId the route id
     * @return the list
     * @throws Exception the exception
     */
    List<ScPriceconfOc> selectByVehicleTypeId(Integer vehicleTypeId) throws Exception;

    /**
     * Select list by conditions map.
     *
     * @param pageVo     the page vo
     * @param conditions the conditions
     * @return the map
     * @throws Exception the exception
     */
    Map<String, Object> selectListByConditions(PageVo pageVo, ScPriceconfOcQueryConditions conditions) throws Exception;

    /**
     * Select by primary key sc priceconf oc.
     *
     * @param id the id
     * @return the sc priceconf oc
     * @throws Exception the exception
     */
    ScPriceconfOc selectByPrimaryKey(Integer id) throws Exception;

    /**
     * Select effective sc priceconf oc.
     *
     * @param vehicleTypeId the vehicle type id
     * @param effectiveDate the effective date
     * @return the sc priceconf oc
     * @throws Exception the exception
     */
    ScPriceconfOc selectEffective(Integer vehicleTypeId, Date effectiveDate) throws Exception;
}
